package com.lrj.datastructure.calendar;

public class SimpleCalendar extends Calendar{
    @Override
    protected int getWeek() {
        //计算从公元1年 ~ 公元year - 1年的总天数（不包括year这一年）
        int y = year - 1;
        //把每一年都当365天计算
        //假设每4年都是闰年，就多加一天，但每100年又是一个平年，与4年一个闰年冲突，所以要减一天
        //但每400年又是一个闰年，与100年一个平年冲突，所以要加一天
        int sum = y * 365 + y / 4 - y / 100 + y / 400;
        //计算从year年1月1日 ~ year年month - 1月1日 的总天数（不包括month这个月）
        for (int i = 0; i < month - 1; i ++) {
            sum += getMonthDays(i + 1, year);
        }
        //加上year年month月1日这一天
        sum += 1;
        //由于公元前1年12月31日（也就是公元0年12月31日）刚好是星期日
        //所以总天数取模7就是星期几
        return sum % 7;
    }
}
